package com.zhb.cloud.base;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.zhb.cloud.core.JsonReturn;
import com.zhb.cloud.enums.ResultCodeEnum;

/**
 * @ClassName: BaseService
 * @Description: 简单封装
 * @author: zhb zhb1316783262@163.com
 * @date: 2017年11月23日 上午11:31:13
 *
 */
public class BaseService {
	/**
	 * 日志类
	 */
	protected final Logger logger = LoggerFactory.getLogger(getClass());

	/**
	 * @Description: 系统错误 统一返回(只返回信息)
	 * @param info
	 * @return JsonReturn
	 */
	protected JsonReturn error(String message) {
		JsonReturn jsonReturn = new JsonReturn();
		jsonReturn.setCode(ResultCodeEnum.ERROR.getCode());
		jsonReturn.setMessage(message);
		return jsonReturn;
	}

	/**
	 * @Description:返回封装，code=500支持自定义res信息
	 * @param info
	 * @param res
	 * @return JsonReturn
	 */
	protected JsonReturn sysError(String message, Object res) {
		JsonReturn jsonReturn = new JsonReturn();
		jsonReturn.setCode(ResultCodeEnum.ERROR.getCode());
		jsonReturn.setMessage(message);
		jsonReturn.setData(res);
		return jsonReturn;
	}

	/**
	 * @Description: 参数错误统一返回 400(只返回信息)
	 * @param info
	 * @return JsonReturn
	 */
	protected JsonReturn paramError(String message) {
		JsonReturn jsonReturn = new JsonReturn();
		jsonReturn.setCode(ResultCodeEnum.PARAMETER_ERROR.getCode());
		jsonReturn.setMessage(message);
		return jsonReturn;
	}

	/**
	 * @Description:返回封装，参数错误=400 返回自定义res信息
	 * @param info
	 * @param res
	 * @return JsonReturn
	 */
	protected JsonReturn paramError(String message, Object res) {
		JsonReturn jsonReturn = new JsonReturn();
		jsonReturn.setCode(ResultCodeEnum.PARAMETER_ERROR.getCode());
		jsonReturn.setMessage(message);
		jsonReturn.setData(res);
		return jsonReturn;
	}

	/**
	 * @Description:自定义提示信息方法
	 * @param code
	 *            返回码{@link ResultCodeEnum}
	 * @param info
	 *            页面提示信息
	 * @param res
	 *            数据字段 可以为空
	 * @return JsonReturn
	 */
	protected JsonReturn message(Integer code, String message, Object res) {
		JsonReturn jsonReturn = new JsonReturn();
		jsonReturn.setCode(code);
		jsonReturn.setMessage(message);
		if (null != res) {
			jsonReturn.setData(res);
		}
		return jsonReturn;
	}

	protected JsonReturn message(Integer code, String info) {
		return this.message(code, info, null);
	}

	/**
	 * @Description: 请求成功返回封装，code=200
	 * @param
	 * @param res
	 * @return 设定文件
	 */
	protected JsonReturn success(String message) {
		return success(message, null);
	}

	/**
	 * @Description: 请求成功返回封装，code=200
	 * @param
	 * @param res
	 * @return 设定文件
	 */
	protected JsonReturn success(Object res) {
		return success(null, res);
	}

	/**
	 * @Description: 请求成功返回封装，code=200
	 * @param info
	 * @param res
	 * @return 设定文件
	 */
	protected JsonReturn success(String message, Object res) {
		JsonReturn jsonReturn = new JsonReturn();
		jsonReturn.setCode(ResultCodeEnum.SUCCESS.getCode());
		if (message == null) {
			jsonReturn.setMessage("success");
		} else {
			jsonReturn.setMessage(message);
		}
		if (null != res) {
			jsonReturn.setData(res);
		}
		return jsonReturn;
	}
}
